﻿using System;
using System.Collections.Generic;
using Neturion.Dados;
using Neturion.IRepositorios;
using Neturion.Repositorios;

namespace Neturion.Negocios
{
    /// <summary>
    /// 
    /// </summary>
    public class NegocioUsuario
    {
        private IRepositorioUsuario _repositorioUsuario;

        /// <summary>
        /// 
        /// </summary>
        public NegocioUsuario()
        {
            _repositorioUsuario = new RepositorioUsuario();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="usuario"></param>
        /// <returns></returns>
        public Usuario Inserir(Usuario usuario)
        {
            return _repositorioUsuario.Inserir(usuario);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="usuario"></param>
        /// <returns></returns>
        public Usuario Atualizar(Usuario usuario)
        {
            return _repositorioUsuario.Atualizar(usuario);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="usuario"></param>
        public void Excluir(Usuario usuario)
        {
            Usuario usuarioTmp = ObterPorId(usuario.UsuarioId);
            _repositorioUsuario.Excluir(usuarioTmp);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public IList<Usuario> ObterTodos(int inicio, int quantidade, int quantidadeMinima, string login, DateTime? inicioVigenciaDe, DateTime? inicioVigenciaAte, DateTime? fimVigenciaDe,
                                            DateTime? fimVigenciaAte, Sistema sistema, Usuario usuarioPermissao)
        {
            return _repositorioUsuario.ObterTodos(inicio, quantidade, quantidadeMinima, login, inicioVigenciaDe, inicioVigenciaAte, fimVigenciaDe, fimVigenciaAte, sistema);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Usuario ObterPorId(int id)
        {
            return _repositorioUsuario.ObterPorId(id);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="login"></param>
        /// <returns></returns>
        public Usuario ObterPorLogin(string login)
        {
            return _repositorioUsuario.ObterPorLogin(login);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="login"></param>
        /// <param name="senha"></param>
        /// <returns></returns>
        public Usuario ObterPorLoginSenha(string login, string senha)
        {
            return _repositorioUsuario.ObterPorLoginSenha(login, senha);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="usuario"></param>
        /// <returns></returns>
        public bool EfetuarLogin(Usuario usuario)
        {
            return true;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="usuario"></param>
        /// <returns></returns>
        public bool EfetuarLogout(Usuario usuario)
        {
            return true;
        }
    }
}